import PubSub from 'pubsub-js'
import moment from 'moment'
import request from '../../../utils/request'
//
// 获取全局实例
const appInstance =getApp()
Page({

    /**
     * 页面的初始数据
     */
    data: {
        isPlay:false,//是否播放
        ids:'',//从recommendSong传入的音乐Id
        song:'',//推荐音乐的参数
        musicLink:'',//音乐播放链接
        currentTime:'00:00',//当前播放时间
        totalTime:'',//音乐总时长
        currentWidthPercentage:0
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        //console.log(JSON.parse(options.song))
        let ids=options.song
        this.setData({
            ids
        })
        this.getSongData(this.data.ids)
        //判断当前音乐是否在播放
        if(appInstance.globalData.isMusicPlay && appInstance.globalData.musicId === ids){
            // 修改当前页面音乐播放状态为true
            this.setData({
              isPlay: true
            })
            }
        this.backgroundAudioManager=wx.getBackgroundAudioManager()
        //防止视频（音频）加载未完成进行播放
        setTimeout(() => {
            this.backgroundAudioManager.onPlay(()=>{
                this.changePlayState(true)
                // 修改全局音乐播放的状态
                appInstance.globalData.musicId = ids
            })
        }, 50);
        this.backgroundAudioManager.onPause(()=>{
            this.changePlayState(false)

        })
        this.backgroundAudioManager.onStop(()=>{
            this.changePlayState(false)
        })
        this.backgroundAudioManager.onTimeUpdate(()=>{
            let currentTime=moment(this.backgroundAudioManager.currentTime*1000).format('mm:ss')
            let currentWidthPercentage=100*this.backgroundAudioManager.currentTime/this.backgroundAudioManager.duration
            this.setData({
                currentTime,
                currentWidthPercentage
            })
        })
        this.backgroundAudioManager.onEnded(()=>{
            PubSub.publish('switchType','next')
            this.setData({
                currentTime:'00:00',
                currentWidthPercentage:0
            })
        })
    },
    //修改播放功能函数
    changePlayState(isPlay){
        this.setData({
            isPlay
        })
        // 修改全局音乐播放的状态
        appInstance.globalData.isMusicPlay = isPlay;
    },
    handleMusicPlay(){
        let isPlay =!this.data.isPlay
        /* this.setData({
            isPlay
        })  */
        let {ids,musicLink} =this.data
        this.mangerMusic(isPlay,ids,musicLink)
    },
    async getSongData(ids){
        let songDate = await request('/song/detail',{ids:ids})
        console.log(songDate)
        let totalTime=moment(songDate.songs[0].dt).format('mm:ss')
        this.setData({
            song:songDate.songs[0],
            totalTime
        })
        wx.setNavigationBarTitle({
          title:this.data.song.name
        })
    },
    async mangerMusic(isPlay,ids,musicLink){
        if(isPlay){
            if(!musicLink){
                let musicLinkData=await request('/song/url',{id:ids})
                musicLink=musicLinkData.data[0].url
                this.setData({
                    musicLink
                })
            }
            /* 创建音乐播放实例 */
            this.backgroundAudioManager.src=musicLink
            this.backgroundAudioManager.title=this.data.song.name
        }else{
            /* 暂停 */
            this.backgroundAudioManager.pause()
        } 
    },
    //点击切歌回调
    handleSwitch(event){
        let type=event.currentTarget.id
        //播放切换的音乐之前停止当前音乐
        this.backgroundAudioManager.stop()
        PubSub.publish('switchType',type)
        PubSub.subscribe('musicId',(msg,ids)=>{
            //获取切换的音乐信息
            this.getSongData(ids)
            //自动播放切换后的音乐
            this.mangerMusic(true,ids)
            PubSub.unsubscribe('musicId')
        })      
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})